package com.ruoyi.asset.service;

import com.ruoyi.asset.domain.TAsset;
import com.ruoyi.asset.domain.AssetStatusHistory;

/**
 * 资产状态管理服务接口
 * 
 * @author ruoyi
 * @date 2025-01-21
 */
public interface IAssetStatusService 
{
    /**
     * 更新资产状态
     * 
     * @param assetNo 资产编号
     * @param newStatusCode 新状态编码
     * @param reason 状态变更原因
     * @param operatorId 操作人ID
     * @return 结果
     */
    int updateAssetStatus(String assetNo, String newStatusCode, String reason, Long operatorId);
    
    /**
     * 根据故障报修更新资产状态为故障
     * 
     * @param assetNo 资产编号
     * @param reportNo 报修单号
     * @param operatorId 操作人ID
     * @return 结果
     */
    int updateAssetStatusToFault(String assetNo, String reportNo, Long operatorId);
    
    /**
     * 根据维修完成更新资产状态为正常
     * 
     * @param assetNo 资产编号
     * @param workOrderNo 维修单号
     * @param operatorId 操作人ID
     * @return 结果
     */
    int updateAssetStatusToNormal(String assetNo, String workOrderNo, Long operatorId);
    
    /**
     * 获取资产状态历史记录
     * 
     * @param assetNo 资产编号
     * @return 状态历史列表
     */
    java.util.List<AssetStatusHistory> getAssetStatusHistory(String assetNo);
    
    /**
     * 验证状态变更是否合法
     * 
     * @param currentStatusCode 当前状态编码
     * @param newStatusCode 新状态编码
     * @return 是否合法
     */
    boolean validateStatusTransition(String currentStatusCode, String newStatusCode);
}
